from PIL import Image, ImageDraw, ImageFont
import qrcode
import os


# 定义一个函数来生成海报
def generate_poster(name_poster, output_path):
    # 打开模板图片
    template = Image.open('template.png')
    draw = ImageDraw.Draw(template)

    # 设置字体
    font = ImageFont.truetype('simhei.ttf', 40)

    # 清除原有文字（假设原有文字在 (100, 50) 位置）
    draw.rectangle([(200, 350), (200 + 200, 350 + 50)], fill=(255, 255, 255))  # 使用白色矩形覆盖原有文字

    # 在图片上写新名字
    draw.text((200, 350), name_poster, font=font, fill=(0, 0, 0))

    # 生成二维码（选做）
    if generate_qr:
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=10,
            border=4,
        )
        qr.add_data(name_poster)
        qr.make(fit=True)

        qr_img = qr.make_image(fill='black', back_color='white')
        qr_img = qr_img.resize((100, 100))
        template.paste(qr_img, (50, 680))

    # 保存海报
    template.save(output_path)


# 设置是否生成二维码
generate_qr = True

# 生成海报
for i in range(1, 4):
    name = f'张三_{i}'  # 替换为新的文字内容
    output_path_poster = f'poster_list/poster_{i}.png'
    generate_poster(name, output_path_poster)

print('海报生成完成！')
